/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.lostreseditores.modelo;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author DILOVE
 */
@Entity
@Table(name = "institucion")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Institucion.findAll", query = "SELECT i FROM Institucion i"),
    @NamedQuery(name = "Institucion.findByIdInstitucion", query = "SELECT i FROM Institucion i WHERE i.idInstitucion = :idInstitucion"),
    @NamedQuery(name = "Institucion.findByNombreinstitucion", query = "SELECT i FROM Institucion i WHERE i.nombreinstitucion = :nombreinstitucion"),
    @NamedQuery(name = "Institucion.findByDireccioninstitucion", query = "SELECT i FROM Institucion i WHERE i.direccioninstitucion = :direccioninstitucion"),
    @NamedQuery(name = "Institucion.findByTelefonoinstitucion", query = "SELECT i FROM Institucion i WHERE i.telefonoinstitucion = :telefonoinstitucion"),
    @NamedQuery(name = "Institucion.findByEncargadoinstitucion", query = "SELECT i FROM Institucion i WHERE i.encargadoinstitucion = :encargadoinstitucion"),
    @NamedQuery(name = "Institucion.findByReguladoinstitucion", query = "SELECT i FROM Institucion i WHERE i.reguladoinstitucion = :reguladoinstitucion")})
public class Institucion implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_institucion")
    private Integer idInstitucion;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "nombreinstitucion")
    private String nombreinstitucion;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "direccioninstitucion")
    private String direccioninstitucion;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "telefonoinstitucion")
    private String telefonoinstitucion;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "encargadoinstitucion")
    private String encargadoinstitucion;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "reguladoinstitucion")
    private String reguladoinstitucion;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "institucion")
    private List<Gradoinstitucion> gradoinstitucionList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idInstitucion")
    private List<Premarcado> premarcadoList;
    @JoinColumn(name = "id_distribuidor", referencedColumnName = "id_distribuidor")
    @ManyToOne(optional = false)
    private Distribuidor idDistribuidor;
    @JoinColumn(name = "id_ciudad", referencedColumnName = "id_ciudad")
    @ManyToOne(optional = false)
    private Ciudad idCiudad;

    public Institucion() {
    }

    public Institucion(Integer idInstitucion) {
        this.idInstitucion = idInstitucion;
    }

    public Institucion(Integer idInstitucion, String nombreinstitucion, String direccioninstitucion, String telefonoinstitucion, String encargadoinstitucion, String reguladoinstitucion) {
        this.idInstitucion = idInstitucion;
        this.nombreinstitucion = nombreinstitucion;
        this.direccioninstitucion = direccioninstitucion;
        this.telefonoinstitucion = telefonoinstitucion;
        this.encargadoinstitucion = encargadoinstitucion;
        this.reguladoinstitucion = reguladoinstitucion;
    }

    public Integer getIdInstitucion() {
        return idInstitucion;
    }

    public void setIdInstitucion(Integer idInstitucion) {
        this.idInstitucion = idInstitucion;
    }

    public String getNombreinstitucion() {
        return nombreinstitucion;
    }

    public void setNombreinstitucion(String nombreinstitucion) {
        this.nombreinstitucion = nombreinstitucion;
    }

    public String getDireccioninstitucion() {
        return direccioninstitucion;
    }

    public void setDireccioninstitucion(String direccioninstitucion) {
        this.direccioninstitucion = direccioninstitucion;
    }

    public String getTelefonoinstitucion() {
        return telefonoinstitucion;
    }

    public void setTelefonoinstitucion(String telefonoinstitucion) {
        this.telefonoinstitucion = telefonoinstitucion;
    }

    public String getEncargadoinstitucion() {
        return encargadoinstitucion;
    }

    public void setEncargadoinstitucion(String encargadoinstitucion) {
        this.encargadoinstitucion = encargadoinstitucion;
    }

    public String getReguladoinstitucion() {
        return reguladoinstitucion;
    }

    public void setReguladoinstitucion(String reguladoinstitucion) {
        this.reguladoinstitucion = reguladoinstitucion;
    }

    @XmlTransient
    public List<Gradoinstitucion> getGradoinstitucionList() {
        return gradoinstitucionList;
    }

    public void setGradoinstitucionList(List<Gradoinstitucion> gradoinstitucionList) {
        this.gradoinstitucionList = gradoinstitucionList;
    }

    @XmlTransient
    public List<Premarcado> getPremarcadoList() {
        return premarcadoList;
    }

    public void setPremarcadoList(List<Premarcado> premarcadoList) {
        this.premarcadoList = premarcadoList;
    }

    public Distribuidor getIdDistribuidor() {
        return idDistribuidor;
    }

    public void setIdDistribuidor(Distribuidor idDistribuidor) {
        this.idDistribuidor = idDistribuidor;
    }

    public Ciudad getIdCiudad() {
        return idCiudad;
    }

    public void setIdCiudad(Ciudad idCiudad) {
        this.idCiudad = idCiudad;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idInstitucion != null ? idInstitucion.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Institucion)) {
            return false;
        }
        Institucion other = (Institucion) object;
        if ((this.idInstitucion == null && other.idInstitucion != null) || (this.idInstitucion != null && !this.idInstitucion.equals(other.idInstitucion))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.lostreseditores.modelo.Institucion[ idInstitucion=" + idInstitucion + " ]";
    }
    
}
